A log-structured file system is a file system in which data and metadata are written sequentially, e.g., to a circular buffer or to one of multiple segments of storage. Writes are made in batches in a new location to avoid partial overwrites of physical block. This methodology is proven effective in increasing write speed in flash storage devices. The efficiency of this methodology, however, depreciates as the file system fills up and the same block is rewritten. For example, rewriting a block includes a three-step process. The original block is read from the flash media, modified in memory, and written to the flash media in a new location. The original block is left empty or otherwise flagged until it is processed for re-allocation at a later time. For example, the system may flag the block as having been deleted or overwritten. The process of reallocating deleted and overwritten blocks is referred to as garbage collection. Maintaining a separate process for tracking and reallocating old blocks consumes processing time and power. As the file system fills up, the garbage collection process becomes a choke point for performing new writes or rewrites. For example, if a write is attempted when the file system is full and blocks have yet to be reallocated, the system waits for the garbage collection process to scan for and to reallocate flagged blocks before completing the write.